#pragma once
#include <json/json.h>
#include <unordered_map>
#include <loguru.hpp>
#include <functional>
#include <string>
namespace Util
{
    class TranslateUtil
    {
    public:
        static void translateShowNameFields(Json::Value &jsonVal);

    private:
        /*
        note: map的自定义排序函数
        map的自定义函数需要满足严格弱序（Strict Weak Ordering）的要求
        严格弱序要求比较器必须满足以下条件：
            1.非自反性：对于任何 x，comp(x, x) 必须为 false。
            2.传递性：如果 comp(x, y) 为 true 且 comp(y, z) 为 true，则 comp(x, z) 也必须为 true。
            3.反对称性：如果 comp(x, y) 为 true，则 comp(y, x) 必须为 false。
         */
        // map需要严格按字段的大小排序,否则可能出现 frame length 翻译时,先遍历到 frame,从而将帧长度翻译成帧 length的情况
        const static std::map<std::string, std::string, std::function<bool(const std::string &, const std::string &)>> translationMap;
        static int count;
    };
}